//
//  HealthKitManage.h
//  Walk
//
//  Created by 黄世淞 on 2018/6/2.
//  Copyright © 2018年 黄世淞. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <HealthKit/HealthKit.h>
#import <UIKit/UIDevice.h>
#define HealthKitManagerShareInstance [HealthKitManager shareInstance]
#define HKVersion [[[UIDevice currentDevice] systemVersion] doubleValue]
#define CustomHealthErrorDomain @"com.sdqt.healthError"
@interface HealthKitManager : NSObject
@property (nonatomic, strong) HKHealthStore *healthStore;
+(id)shareInstance;
/**
 检查是否支持获取健康数据
 */
- (void)authorizeHealthKit:(void(^)(BOOL success, NSError * error))compltion;
#pragma mark ---  时间段
/**
 获取两个日期的时间段

 @param startDate 开始日期
 @param endDate 结束日期
 @return 时间段
 */
+ (NSPredicate *)predicateStartDate:(NSDate *)startDate endDate:(NSDate *)endDate;

/**
 当天时间段

 @return 时间段
 */
+ (NSPredicate *)predicateForToday;

/**
 某一天的时间段（0：00-24：00）

 @param date date
 @return 时间段
 */
+ (NSPredicate *)predicateForDate:(NSDate *)date;

#pragma mark ---  获取步数
/**
 根据时间段获取步数
 
 @param predicate 时间段
 */
- (void)getStepCountWithPredicate:(NSPredicate *)predicate
                       completion:(void(^)(NSInteger stepCount,NSError * error))completion;
/**
 获取今日的步数
 */
- (void)getStepCountForToday:(void(^)(NSInteger stepCount,NSError * error))completion;
/**
 获取指定日期的步数
 
 @param date 指定日期
 */
- (void)getStepCountForDate:(NSDate *)date
                 completion:(void(^)(NSInteger stepCount,NSError * error))completion;
/**
 获取两个日期间的步数
 
 @param startDate 开始日期
 @param endDate 结束日期
 */
- (void)getStepCountForStartDate:(NSDate *)startDate
                         endDate:(NSDate *)endDate
                      completion:(void(^)(NSInteger stepCount,NSError * error))completion;

#pragma mark --- 获取距离（步行 + 跑步）
/**
 根据时间段获取距离
 
 @param predicate 时间段
 */
- (void)getDistanceWithPredicate:(NSPredicate *)predicate
                      completion:(void(^)(double distance,NSError * error))completion;
/**
 获取今日的距离
 */
- (void)getDistanceForToday:(void(^)(double distance,NSError * error))completion;
/**
 获取指定日期的距离
 
 @param date 指定日期
 */
- (void)getDistanceForDate:(NSDate *)date
                completion:(void(^)(double distance,NSError * error))completion;
/**
 获取两个日期间的距离
 
 @param startDate 开始日期
 @param endDate 结束日期
 */
- (void)getDistanceForStartDate:(NSDate *)startDate
                        endDate:(NSDate *)endDate
                     completion:(void(^)(double distance,NSError * error))completion;
#pragma mark --- 卡路里
/**
 根据步数 换上卡路里

 @param stepCount 步数
 @return 卡路里
 */
- (double)calorieForStepCount:(NSInteger)stepCount;




@end

